
// Generated from /home/chh/gitprojects/plc2llvm/grammar/PLCSTParser.g4 by ANTLR 4.11.1

#pragma once


#include "antlr4-runtime.h"
#include "plc2llvm/Parser/PLCSTParser.h"


namespace plcst {

/**
 * This interface defines an abstract listener for a parse tree produced by PLCSTParser.
 */
class  PLCSTParserListener : public antlr4::tree::ParseTreeListener {
public:

  virtual void enterStartpoint(PLCSTParser::StartpointContext *ctx) = 0;
  virtual void exitStartpoint(PLCSTParser::StartpointContext *ctx) = 0;

  virtual void enterConstant(PLCSTParser::ConstantContext *ctx) = 0;
  virtual void exitConstant(PLCSTParser::ConstantContext *ctx) = 0;

  virtual void enterNumeric_Literal(PLCSTParser::Numeric_LiteralContext *ctx) = 0;
  virtual void exitNumeric_Literal(PLCSTParser::Numeric_LiteralContext *ctx) = 0;

  virtual void enterInt_Literal(PLCSTParser::Int_LiteralContext *ctx) = 0;
  virtual void exitInt_Literal(PLCSTParser::Int_LiteralContext *ctx) = 0;

  virtual void enterReal_Literal(PLCSTParser::Real_LiteralContext *ctx) = 0;
  virtual void exitReal_Literal(PLCSTParser::Real_LiteralContext *ctx) = 0;

  virtual void enterBool_Literal(PLCSTParser::Bool_LiteralContext *ctx) = 0;
  virtual void exitBool_Literal(PLCSTParser::Bool_LiteralContext *ctx) = 0;

  virtual void enterChar_Str(PLCSTParser::Char_StrContext *ctx) = 0;
  virtual void exitChar_Str(PLCSTParser::Char_StrContext *ctx) = 0;

  virtual void enterWChar_Str(PLCSTParser::WChar_StrContext *ctx) = 0;
  virtual void exitWChar_Str(PLCSTParser::WChar_StrContext *ctx) = 0;

  virtual void enterChar_Literal(PLCSTParser::Char_LiteralContext *ctx) = 0;
  virtual void exitChar_Literal(PLCSTParser::Char_LiteralContext *ctx) = 0;

  virtual void enterTime_Literal(PLCSTParser::Time_LiteralContext *ctx) = 0;
  virtual void exitTime_Literal(PLCSTParser::Time_LiteralContext *ctx) = 0;

  virtual void enterBit_Str_Literal(PLCSTParser::Bit_Str_LiteralContext *ctx) = 0;
  virtual void exitBit_Str_Literal(PLCSTParser::Bit_Str_LiteralContext *ctx) = 0;

  virtual void enterNumeric_Type_Name(PLCSTParser::Numeric_Type_NameContext *ctx) = 0;
  virtual void exitNumeric_Type_Name(PLCSTParser::Numeric_Type_NameContext *ctx) = 0;

  virtual void enterString_Type_Name(PLCSTParser::String_Type_NameContext *ctx) = 0;
  virtual void exitString_Type_Name(PLCSTParser::String_Type_NameContext *ctx) = 0;

  virtual void enterBit_Str_Type_Name(PLCSTParser::Bit_Str_Type_NameContext *ctx) = 0;
  virtual void exitBit_Str_Type_Name(PLCSTParser::Bit_Str_Type_NameContext *ctx) = 0;

  virtual void enterData_Type_Access(PLCSTParser::Data_Type_AccessContext *ctx) = 0;
  virtual void exitData_Type_Access(PLCSTParser::Data_Type_AccessContext *ctx) = 0;

  virtual void enterElem_Type_Name(PLCSTParser::Elem_Type_NameContext *ctx) = 0;
  virtual void exitElem_Type_Name(PLCSTParser::Elem_Type_NameContext *ctx) = 0;

  virtual void enterNestedNameSpecifier(PLCSTParser::NestedNameSpecifierContext *ctx) = 0;
  virtual void exitNestedNameSpecifier(PLCSTParser::NestedNameSpecifierContext *ctx) = 0;

  virtual void enterDerived_Type_Access(PLCSTParser::Derived_Type_AccessContext *ctx) = 0;
  virtual void exitDerived_Type_Access(PLCSTParser::Derived_Type_AccessContext *ctx) = 0;

  virtual void enterStruct_Type_Access(PLCSTParser::Struct_Type_AccessContext *ctx) = 0;
  virtual void exitStruct_Type_Access(PLCSTParser::Struct_Type_AccessContext *ctx) = 0;

  virtual void enterData_Type_Decl(PLCSTParser::Data_Type_DeclContext *ctx) = 0;
  virtual void exitData_Type_Decl(PLCSTParser::Data_Type_DeclContext *ctx) = 0;

  virtual void enterType_Decl(PLCSTParser::Type_DeclContext *ctx) = 0;
  virtual void exitType_Decl(PLCSTParser::Type_DeclContext *ctx) = 0;

  virtual void enterSimple_Type_Decl(PLCSTParser::Simple_Type_DeclContext *ctx) = 0;
  virtual void exitSimple_Type_Decl(PLCSTParser::Simple_Type_DeclContext *ctx) = 0;

  virtual void enterNested_Simple_Type_Decl(PLCSTParser::Nested_Simple_Type_DeclContext *ctx) = 0;
  virtual void exitNested_Simple_Type_Decl(PLCSTParser::Nested_Simple_Type_DeclContext *ctx) = 0;

  virtual void enterSimple_Spec_Init(PLCSTParser::Simple_Spec_InitContext *ctx) = 0;
  virtual void exitSimple_Spec_Init(PLCSTParser::Simple_Spec_InitContext *ctx) = 0;

  virtual void enterSimple_Spec(PLCSTParser::Simple_SpecContext *ctx) = 0;
  virtual void exitSimple_Spec(PLCSTParser::Simple_SpecContext *ctx) = 0;

  virtual void enterSubrange_Type_Decl(PLCSTParser::Subrange_Type_DeclContext *ctx) = 0;
  virtual void exitSubrange_Type_Decl(PLCSTParser::Subrange_Type_DeclContext *ctx) = 0;

  virtual void enterSubrange_Spec_Init(PLCSTParser::Subrange_Spec_InitContext *ctx) = 0;
  virtual void exitSubrange_Spec_Init(PLCSTParser::Subrange_Spec_InitContext *ctx) = 0;

  virtual void enterSubrange_Spec(PLCSTParser::Subrange_SpecContext *ctx) = 0;
  virtual void exitSubrange_Spec(PLCSTParser::Subrange_SpecContext *ctx) = 0;

  virtual void enterSubrange(PLCSTParser::SubrangeContext *ctx) = 0;
  virtual void exitSubrange(PLCSTParser::SubrangeContext *ctx) = 0;

  virtual void enterEnum_Type_Decl(PLCSTParser::Enum_Type_DeclContext *ctx) = 0;
  virtual void exitEnum_Type_Decl(PLCSTParser::Enum_Type_DeclContext *ctx) = 0;

  virtual void enterNamed_Spec_Init(PLCSTParser::Named_Spec_InitContext *ctx) = 0;
  virtual void exitNamed_Spec_Init(PLCSTParser::Named_Spec_InitContext *ctx) = 0;

  virtual void enterEnum_Spec_Init(PLCSTParser::Enum_Spec_InitContext *ctx) = 0;
  virtual void exitEnum_Spec_Init(PLCSTParser::Enum_Spec_InitContext *ctx) = 0;

  virtual void enterEnum_Value_Spec(PLCSTParser::Enum_Value_SpecContext *ctx) = 0;
  virtual void exitEnum_Value_Spec(PLCSTParser::Enum_Value_SpecContext *ctx) = 0;

  virtual void enterEnum_Value(PLCSTParser::Enum_ValueContext *ctx) = 0;
  virtual void exitEnum_Value(PLCSTParser::Enum_ValueContext *ctx) = 0;

  virtual void enterArray_Type_Decl(PLCSTParser::Array_Type_DeclContext *ctx) = 0;
  virtual void exitArray_Type_Decl(PLCSTParser::Array_Type_DeclContext *ctx) = 0;

  virtual void enterArray_Spec_Init(PLCSTParser::Array_Spec_InitContext *ctx) = 0;
  virtual void exitArray_Spec_Init(PLCSTParser::Array_Spec_InitContext *ctx) = 0;

  virtual void enterArray_Spec(PLCSTParser::Array_SpecContext *ctx) = 0;
  virtual void exitArray_Spec(PLCSTParser::Array_SpecContext *ctx) = 0;

  virtual void enterNested_Array_Type_Name(PLCSTParser::Nested_Array_Type_NameContext *ctx) = 0;
  virtual void exitNested_Array_Type_Name(PLCSTParser::Nested_Array_Type_NameContext *ctx) = 0;

  virtual void enterDirect_Array_Type_Name(PLCSTParser::Direct_Array_Type_NameContext *ctx) = 0;
  virtual void exitDirect_Array_Type_Name(PLCSTParser::Direct_Array_Type_NameContext *ctx) = 0;

  virtual void enterArray_Init(PLCSTParser::Array_InitContext *ctx) = 0;
  virtual void exitArray_Init(PLCSTParser::Array_InitContext *ctx) = 0;

  virtual void enterArray_Elem_Init(PLCSTParser::Array_Elem_InitContext *ctx) = 0;
  virtual void exitArray_Elem_Init(PLCSTParser::Array_Elem_InitContext *ctx) = 0;

  virtual void enterMult_Array_Elem_Init_Value(PLCSTParser::Mult_Array_Elem_Init_ValueContext *ctx) = 0;
  virtual void exitMult_Array_Elem_Init_Value(PLCSTParser::Mult_Array_Elem_Init_ValueContext *ctx) = 0;

  virtual void enterArray_Elem_Init_Value(PLCSTParser::Array_Elem_Init_ValueContext *ctx) = 0;
  virtual void exitArray_Elem_Init_Value(PLCSTParser::Array_Elem_Init_ValueContext *ctx) = 0;

  virtual void enterStruct_Type_Decl(PLCSTParser::Struct_Type_DeclContext *ctx) = 0;
  virtual void exitStruct_Type_Decl(PLCSTParser::Struct_Type_DeclContext *ctx) = 0;

  virtual void enterNested_Struct_Type_Decl(PLCSTParser::Nested_Struct_Type_DeclContext *ctx) = 0;
  virtual void exitNested_Struct_Type_Decl(PLCSTParser::Nested_Struct_Type_DeclContext *ctx) = 0;

  virtual void enterStruct_Spec(PLCSTParser::Struct_SpecContext *ctx) = 0;
  virtual void exitStruct_Spec(PLCSTParser::Struct_SpecContext *ctx) = 0;

  virtual void enterStruct_Spec_Init(PLCSTParser::Struct_Spec_InitContext *ctx) = 0;
  virtual void exitStruct_Spec_Init(PLCSTParser::Struct_Spec_InitContext *ctx) = 0;

  virtual void enterStruct_Decl(PLCSTParser::Struct_DeclContext *ctx) = 0;
  virtual void exitStruct_Decl(PLCSTParser::Struct_DeclContext *ctx) = 0;

  virtual void enterStruct_Elem_Decl(PLCSTParser::Struct_Elem_DeclContext *ctx) = 0;
  virtual void exitStruct_Elem_Decl(PLCSTParser::Struct_Elem_DeclContext *ctx) = 0;

  virtual void enterStruct_Init(PLCSTParser::Struct_InitContext *ctx) = 0;
  virtual void exitStruct_Init(PLCSTParser::Struct_InitContext *ctx) = 0;

  virtual void enterStruct_Elem_Init(PLCSTParser::Struct_Elem_InitContext *ctx) = 0;
  virtual void exitStruct_Elem_Init(PLCSTParser::Struct_Elem_InitContext *ctx) = 0;

  virtual void enterStr_Type_Decl(PLCSTParser::Str_Type_DeclContext *ctx) = 0;
  virtual void exitStr_Type_Decl(PLCSTParser::Str_Type_DeclContext *ctx) = 0;

  virtual void enterRef_Type_Decl(PLCSTParser::Ref_Type_DeclContext *ctx) = 0;
  virtual void exitRef_Type_Decl(PLCSTParser::Ref_Type_DeclContext *ctx) = 0;

  virtual void enterRef_Spec_Init(PLCSTParser::Ref_Spec_InitContext *ctx) = 0;
  virtual void exitRef_Spec_Init(PLCSTParser::Ref_Spec_InitContext *ctx) = 0;

  virtual void enterRef_Spec(PLCSTParser::Ref_SpecContext *ctx) = 0;
  virtual void exitRef_Spec(PLCSTParser::Ref_SpecContext *ctx) = 0;

  virtual void enterRef_Type_Access(PLCSTParser::Ref_Type_AccessContext *ctx) = 0;
  virtual void exitRef_Type_Access(PLCSTParser::Ref_Type_AccessContext *ctx) = 0;

  virtual void enterRef_Value(PLCSTParser::Ref_ValueContext *ctx) = 0;
  virtual void exitRef_Value(PLCSTParser::Ref_ValueContext *ctx) = 0;

  virtual void enterRef_Addr(PLCSTParser::Ref_AddrContext *ctx) = 0;
  virtual void exitRef_Addr(PLCSTParser::Ref_AddrContext *ctx) = 0;

  virtual void enterRef_Assign(PLCSTParser::Ref_AssignContext *ctx) = 0;
  virtual void exitRef_Assign(PLCSTParser::Ref_AssignContext *ctx) = 0;

  virtual void enterRef_Deref(PLCSTParser::Ref_DerefContext *ctx) = 0;
  virtual void exitRef_Deref(PLCSTParser::Ref_DerefContext *ctx) = 0;

  virtual void enterVariable(PLCSTParser::VariableContext *ctx) = 0;
  virtual void exitVariable(PLCSTParser::VariableContext *ctx) = 0;

  virtual void enterSymbolic_Variable(PLCSTParser::Symbolic_VariableContext *ctx) = 0;
  virtual void exitSymbolic_Variable(PLCSTParser::Symbolic_VariableContext *ctx) = 0;

  virtual void enterVar_Access(PLCSTParser::Var_AccessContext *ctx) = 0;
  virtual void exitVar_Access(PLCSTParser::Var_AccessContext *ctx) = 0;

  virtual void enterMulti_Elem_Var(PLCSTParser::Multi_Elem_VarContext *ctx) = 0;
  virtual void exitMulti_Elem_Var(PLCSTParser::Multi_Elem_VarContext *ctx) = 0;

  virtual void enterSubscript_List(PLCSTParser::Subscript_ListContext *ctx) = 0;
  virtual void exitSubscript_List(PLCSTParser::Subscript_ListContext *ctx) = 0;

  virtual void enterSubscript(PLCSTParser::SubscriptContext *ctx) = 0;
  virtual void exitSubscript(PLCSTParser::SubscriptContext *ctx) = 0;

  virtual void enterStruct_Variable(PLCSTParser::Struct_VariableContext *ctx) = 0;
  virtual void exitStruct_Variable(PLCSTParser::Struct_VariableContext *ctx) = 0;

  virtual void enterStruct_Elem_Select(PLCSTParser::Struct_Elem_SelectContext *ctx) = 0;
  virtual void exitStruct_Elem_Select(PLCSTParser::Struct_Elem_SelectContext *ctx) = 0;

  virtual void enterInput_Decls(PLCSTParser::Input_DeclsContext *ctx) = 0;
  virtual void exitInput_Decls(PLCSTParser::Input_DeclsContext *ctx) = 0;

  virtual void enterInput_Decl(PLCSTParser::Input_DeclContext *ctx) = 0;
  virtual void exitInput_Decl(PLCSTParser::Input_DeclContext *ctx) = 0;

  virtual void enterVar_Decl_Init(PLCSTParser::Var_Decl_InitContext *ctx) = 0;
  virtual void exitVar_Decl_Init(PLCSTParser::Var_Decl_InitContext *ctx) = 0;

  virtual void enterCommon_Var_Decl_Init(PLCSTParser::Common_Var_Decl_InitContext *ctx) = 0;
  virtual void exitCommon_Var_Decl_Init(PLCSTParser::Common_Var_Decl_InitContext *ctx) = 0;

  virtual void enterEdge_Decl(PLCSTParser::Edge_DeclContext *ctx) = 0;
  virtual void exitEdge_Decl(PLCSTParser::Edge_DeclContext *ctx) = 0;

  virtual void enterRef_Var_Decl(PLCSTParser::Ref_Var_DeclContext *ctx) = 0;
  virtual void exitRef_Var_Decl(PLCSTParser::Ref_Var_DeclContext *ctx) = 0;

  virtual void enterInterface_Var_Decl(PLCSTParser::Interface_Var_DeclContext *ctx) = 0;
  virtual void exitInterface_Var_Decl(PLCSTParser::Interface_Var_DeclContext *ctx) = 0;

  virtual void enterVariable_List(PLCSTParser::Variable_ListContext *ctx) = 0;
  virtual void exitVariable_List(PLCSTParser::Variable_ListContext *ctx) = 0;

  virtual void enterArray_Conformand(PLCSTParser::Array_ConformandContext *ctx) = 0;
  virtual void exitArray_Conformand(PLCSTParser::Array_ConformandContext *ctx) = 0;

  virtual void enterArray_Conform_Decl(PLCSTParser::Array_Conform_DeclContext *ctx) = 0;
  virtual void exitArray_Conform_Decl(PLCSTParser::Array_Conform_DeclContext *ctx) = 0;

  virtual void enterFB_Decl_No_Init(PLCSTParser::FB_Decl_No_InitContext *ctx) = 0;
  virtual void exitFB_Decl_No_Init(PLCSTParser::FB_Decl_No_InitContext *ctx) = 0;

  virtual void enterFB_Spec_Init(PLCSTParser::FB_Spec_InitContext *ctx) = 0;
  virtual void exitFB_Spec_Init(PLCSTParser::FB_Spec_InitContext *ctx) = 0;

  virtual void enterFB_Instance_Name(PLCSTParser::FB_Instance_NameContext *ctx) = 0;
  virtual void exitFB_Instance_Name(PLCSTParser::FB_Instance_NameContext *ctx) = 0;

  virtual void enterOutput_Decls(PLCSTParser::Output_DeclsContext *ctx) = 0;
  virtual void exitOutput_Decls(PLCSTParser::Output_DeclsContext *ctx) = 0;

  virtual void enterOutput_Decl(PLCSTParser::Output_DeclContext *ctx) = 0;
  virtual void exitOutput_Decl(PLCSTParser::Output_DeclContext *ctx) = 0;

  virtual void enterIn_Out_Decls(PLCSTParser::In_Out_DeclsContext *ctx) = 0;
  virtual void exitIn_Out_Decls(PLCSTParser::In_Out_DeclsContext *ctx) = 0;

  virtual void enterIn_Out_Var_Decl(PLCSTParser::In_Out_Var_DeclContext *ctx) = 0;
  virtual void exitIn_Out_Var_Decl(PLCSTParser::In_Out_Var_DeclContext *ctx) = 0;

  virtual void enterVar_Decl(PLCSTParser::Var_DeclContext *ctx) = 0;
  virtual void exitVar_Decl(PLCSTParser::Var_DeclContext *ctx) = 0;

  virtual void enterArray_Var_Decl(PLCSTParser::Array_Var_DeclContext *ctx) = 0;
  virtual void exitArray_Var_Decl(PLCSTParser::Array_Var_DeclContext *ctx) = 0;

  virtual void enterStruct_Var_Decl(PLCSTParser::Struct_Var_DeclContext *ctx) = 0;
  virtual void exitStruct_Var_Decl(PLCSTParser::Struct_Var_DeclContext *ctx) = 0;

  virtual void enterVar_Decls(PLCSTParser::Var_DeclsContext *ctx) = 0;
  virtual void exitVar_Decls(PLCSTParser::Var_DeclsContext *ctx) = 0;

  virtual void enterRetain_Var_Decls(PLCSTParser::Retain_Var_DeclsContext *ctx) = 0;
  virtual void exitRetain_Var_Decls(PLCSTParser::Retain_Var_DeclsContext *ctx) = 0;

  virtual void enterLoc_Var_Decls(PLCSTParser::Loc_Var_DeclsContext *ctx) = 0;
  virtual void exitLoc_Var_Decls(PLCSTParser::Loc_Var_DeclsContext *ctx) = 0;

  virtual void enterLoc_Var_Decl(PLCSTParser::Loc_Var_DeclContext *ctx) = 0;
  virtual void exitLoc_Var_Decl(PLCSTParser::Loc_Var_DeclContext *ctx) = 0;

  virtual void enterTemp_Var_Decls(PLCSTParser::Temp_Var_DeclsContext *ctx) = 0;
  virtual void exitTemp_Var_Decls(PLCSTParser::Temp_Var_DeclsContext *ctx) = 0;

  virtual void enterExternal_Var_Decls(PLCSTParser::External_Var_DeclsContext *ctx) = 0;
  virtual void exitExternal_Var_Decls(PLCSTParser::External_Var_DeclsContext *ctx) = 0;

  virtual void enterExternal_Decl(PLCSTParser::External_DeclContext *ctx) = 0;
  virtual void exitExternal_Decl(PLCSTParser::External_DeclContext *ctx) = 0;

  virtual void enterGlobal_Var_Decls(PLCSTParser::Global_Var_DeclsContext *ctx) = 0;
  virtual void exitGlobal_Var_Decls(PLCSTParser::Global_Var_DeclsContext *ctx) = 0;

  virtual void enterGlobal_Var_Decl(PLCSTParser::Global_Var_DeclContext *ctx) = 0;
  virtual void exitGlobal_Var_Decl(PLCSTParser::Global_Var_DeclContext *ctx) = 0;

  virtual void enterGlobal_Var_Spec(PLCSTParser::Global_Var_SpecContext *ctx) = 0;
  virtual void exitGlobal_Var_Spec(PLCSTParser::Global_Var_SpecContext *ctx) = 0;

  virtual void enterLoc_Var_Spec_Init(PLCSTParser::Loc_Var_Spec_InitContext *ctx) = 0;
  virtual void exitLoc_Var_Spec_Init(PLCSTParser::Loc_Var_Spec_InitContext *ctx) = 0;

  virtual void enterLocated_At(PLCSTParser::Located_AtContext *ctx) = 0;
  virtual void exitLocated_At(PLCSTParser::Located_AtContext *ctx) = 0;

  virtual void enterStr_Var_Decl(PLCSTParser::Str_Var_DeclContext *ctx) = 0;
  virtual void exitStr_Var_Decl(PLCSTParser::Str_Var_DeclContext *ctx) = 0;

  virtual void enterS_Byte_Str_Var_Decl(PLCSTParser::S_Byte_Str_Var_DeclContext *ctx) = 0;
  virtual void exitS_Byte_Str_Var_Decl(PLCSTParser::S_Byte_Str_Var_DeclContext *ctx) = 0;

  virtual void enterS_Byte_Str_Spec(PLCSTParser::S_Byte_Str_SpecContext *ctx) = 0;
  virtual void exitS_Byte_Str_Spec(PLCSTParser::S_Byte_Str_SpecContext *ctx) = 0;

  virtual void enterD_Byte_Str_Var_Decl(PLCSTParser::D_Byte_Str_Var_DeclContext *ctx) = 0;
  virtual void exitD_Byte_Str_Var_Decl(PLCSTParser::D_Byte_Str_Var_DeclContext *ctx) = 0;

  virtual void enterD_Byte_Str_Spec(PLCSTParser::D_Byte_Str_SpecContext *ctx) = 0;
  virtual void exitD_Byte_Str_Spec(PLCSTParser::D_Byte_Str_SpecContext *ctx) = 0;

  virtual void enterLoc_Partly_Var_Decl(PLCSTParser::Loc_Partly_Var_DeclContext *ctx) = 0;
  virtual void exitLoc_Partly_Var_Decl(PLCSTParser::Loc_Partly_Var_DeclContext *ctx) = 0;

  virtual void enterLoc_Partly_Var(PLCSTParser::Loc_Partly_VarContext *ctx) = 0;
  virtual void exitLoc_Partly_Var(PLCSTParser::Loc_Partly_VarContext *ctx) = 0;

  virtual void enterVar_Spec(PLCSTParser::Var_SpecContext *ctx) = 0;
  virtual void exitVar_Spec(PLCSTParser::Var_SpecContext *ctx) = 0;

  virtual void enterFunc_Name(PLCSTParser::Func_NameContext *ctx) = 0;
  virtual void exitFunc_Name(PLCSTParser::Func_NameContext *ctx) = 0;

  virtual void enterFunc_Access(PLCSTParser::Func_AccessContext *ctx) = 0;
  virtual void exitFunc_Access(PLCSTParser::Func_AccessContext *ctx) = 0;

  virtual void enterFunc_Decl(PLCSTParser::Func_DeclContext *ctx) = 0;
  virtual void exitFunc_Decl(PLCSTParser::Func_DeclContext *ctx) = 0;

  virtual void enterIO_Var_Decls(PLCSTParser::IO_Var_DeclsContext *ctx) = 0;
  virtual void exitIO_Var_Decls(PLCSTParser::IO_Var_DeclsContext *ctx) = 0;

  virtual void enterFunc_Var_Decls(PLCSTParser::Func_Var_DeclsContext *ctx) = 0;
  virtual void exitFunc_Var_Decls(PLCSTParser::Func_Var_DeclsContext *ctx) = 0;

  virtual void enterFunc_Body(PLCSTParser::Func_BodyContext *ctx) = 0;
  virtual void exitFunc_Body(PLCSTParser::Func_BodyContext *ctx) = 0;

  virtual void enterFB_Type_Name(PLCSTParser::FB_Type_NameContext *ctx) = 0;
  virtual void exitFB_Type_Name(PLCSTParser::FB_Type_NameContext *ctx) = 0;

  virtual void enterFB_Type_Access(PLCSTParser::FB_Type_AccessContext *ctx) = 0;
  virtual void exitFB_Type_Access(PLCSTParser::FB_Type_AccessContext *ctx) = 0;

  virtual void enterFB_Decl(PLCSTParser::FB_DeclContext *ctx) = 0;
  virtual void exitFB_Decl(PLCSTParser::FB_DeclContext *ctx) = 0;

  virtual void enterFB_IO_Var_Decls(PLCSTParser::FB_IO_Var_DeclsContext *ctx) = 0;
  virtual void exitFB_IO_Var_Decls(PLCSTParser::FB_IO_Var_DeclsContext *ctx) = 0;

  virtual void enterFB_Input_Decls(PLCSTParser::FB_Input_DeclsContext *ctx) = 0;
  virtual void exitFB_Input_Decls(PLCSTParser::FB_Input_DeclsContext *ctx) = 0;

  virtual void enterFB_Input_Decl(PLCSTParser::FB_Input_DeclContext *ctx) = 0;
  virtual void exitFB_Input_Decl(PLCSTParser::FB_Input_DeclContext *ctx) = 0;

  virtual void enterFB_Output_Decls(PLCSTParser::FB_Output_DeclsContext *ctx) = 0;
  virtual void exitFB_Output_Decls(PLCSTParser::FB_Output_DeclsContext *ctx) = 0;

  virtual void enterFB_Output_Decl(PLCSTParser::FB_Output_DeclContext *ctx) = 0;
  virtual void exitFB_Output_Decl(PLCSTParser::FB_Output_DeclContext *ctx) = 0;

  virtual void enterOther_Var_Decls(PLCSTParser::Other_Var_DeclsContext *ctx) = 0;
  virtual void exitOther_Var_Decls(PLCSTParser::Other_Var_DeclsContext *ctx) = 0;

  virtual void enterNo_Retain_Var_Decls(PLCSTParser::No_Retain_Var_DeclsContext *ctx) = 0;
  virtual void exitNo_Retain_Var_Decls(PLCSTParser::No_Retain_Var_DeclsContext *ctx) = 0;

  virtual void enterFB_Body(PLCSTParser::FB_BodyContext *ctx) = 0;
  virtual void exitFB_Body(PLCSTParser::FB_BodyContext *ctx) = 0;

  virtual void enterMethod_Decl(PLCSTParser::Method_DeclContext *ctx) = 0;
  virtual void exitMethod_Decl(PLCSTParser::Method_DeclContext *ctx) = 0;

  virtual void enterAccess_Spec(PLCSTParser::Access_SpecContext *ctx) = 0;
  virtual void exitAccess_Spec(PLCSTParser::Access_SpecContext *ctx) = 0;

  virtual void enterClass_Decl(PLCSTParser::Class_DeclContext *ctx) = 0;
  virtual void exitClass_Decl(PLCSTParser::Class_DeclContext *ctx) = 0;

  virtual void enterClass_Type_Access(PLCSTParser::Class_Type_AccessContext *ctx) = 0;
  virtual void exitClass_Type_Access(PLCSTParser::Class_Type_AccessContext *ctx) = 0;

  virtual void enterClass_Instance_Name(PLCSTParser::Class_Instance_NameContext *ctx) = 0;
  virtual void exitClass_Instance_Name(PLCSTParser::Class_Instance_NameContext *ctx) = 0;

  virtual void enterInterface_Decl(PLCSTParser::Interface_DeclContext *ctx) = 0;
  virtual void exitInterface_Decl(PLCSTParser::Interface_DeclContext *ctx) = 0;

  virtual void enterMethod_Prototype(PLCSTParser::Method_PrototypeContext *ctx) = 0;
  virtual void exitMethod_Prototype(PLCSTParser::Method_PrototypeContext *ctx) = 0;

  virtual void enterInterface_Spec_Init(PLCSTParser::Interface_Spec_InitContext *ctx) = 0;
  virtual void exitInterface_Spec_Init(PLCSTParser::Interface_Spec_InitContext *ctx) = 0;

  virtual void enterInterface_Value(PLCSTParser::Interface_ValueContext *ctx) = 0;
  virtual void exitInterface_Value(PLCSTParser::Interface_ValueContext *ctx) = 0;

  virtual void enterInterface_Name_List(PLCSTParser::Interface_Name_ListContext *ctx) = 0;
  virtual void exitInterface_Name_List(PLCSTParser::Interface_Name_ListContext *ctx) = 0;

  virtual void enterInterface_Type_Access(PLCSTParser::Interface_Type_AccessContext *ctx) = 0;
  virtual void exitInterface_Type_Access(PLCSTParser::Interface_Type_AccessContext *ctx) = 0;

  virtual void enterProg_Decl(PLCSTParser::Prog_DeclContext *ctx) = 0;
  virtual void exitProg_Decl(PLCSTParser::Prog_DeclContext *ctx) = 0;

  virtual void enterProg_Type_Access(PLCSTParser::Prog_Type_AccessContext *ctx) = 0;
  virtual void exitProg_Type_Access(PLCSTParser::Prog_Type_AccessContext *ctx) = 0;

  virtual void enterProg_Access_Decls(PLCSTParser::Prog_Access_DeclsContext *ctx) = 0;
  virtual void exitProg_Access_Decls(PLCSTParser::Prog_Access_DeclsContext *ctx) = 0;

  virtual void enterProg_Access_Decl(PLCSTParser::Prog_Access_DeclContext *ctx) = 0;
  virtual void exitProg_Access_Decl(PLCSTParser::Prog_Access_DeclContext *ctx) = 0;

  virtual void enterSFC(PLCSTParser::SFCContext *ctx) = 0;
  virtual void exitSFC(PLCSTParser::SFCContext *ctx) = 0;

  virtual void enterSfc_Network(PLCSTParser::Sfc_NetworkContext *ctx) = 0;
  virtual void exitSfc_Network(PLCSTParser::Sfc_NetworkContext *ctx) = 0;

  virtual void enterInitial_Step(PLCSTParser::Initial_StepContext *ctx) = 0;
  virtual void exitInitial_Step(PLCSTParser::Initial_StepContext *ctx) = 0;

  virtual void enterStep(PLCSTParser::StepContext *ctx) = 0;
  virtual void exitStep(PLCSTParser::StepContext *ctx) = 0;

  virtual void enterAction_Association(PLCSTParser::Action_AssociationContext *ctx) = 0;
  virtual void exitAction_Association(PLCSTParser::Action_AssociationContext *ctx) = 0;

  virtual void enterAction_Qualifier(PLCSTParser::Action_QualifierContext *ctx) = 0;
  virtual void exitAction_Qualifier(PLCSTParser::Action_QualifierContext *ctx) = 0;

  virtual void enterAction_Time(PLCSTParser::Action_TimeContext *ctx) = 0;
  virtual void exitAction_Time(PLCSTParser::Action_TimeContext *ctx) = 0;

  virtual void enterTransition(PLCSTParser::TransitionContext *ctx) = 0;
  virtual void exitTransition(PLCSTParser::TransitionContext *ctx) = 0;

  virtual void enterSteps(PLCSTParser::StepsContext *ctx) = 0;
  virtual void exitSteps(PLCSTParser::StepsContext *ctx) = 0;

  virtual void enterTransition_Cond(PLCSTParser::Transition_CondContext *ctx) = 0;
  virtual void exitTransition_Cond(PLCSTParser::Transition_CondContext *ctx) = 0;

  virtual void enterAction(PLCSTParser::ActionContext *ctx) = 0;
  virtual void exitAction(PLCSTParser::ActionContext *ctx) = 0;

  virtual void enterConfig_Decl(PLCSTParser::Config_DeclContext *ctx) = 0;
  virtual void exitConfig_Decl(PLCSTParser::Config_DeclContext *ctx) = 0;

  virtual void enterResource_Decl(PLCSTParser::Resource_DeclContext *ctx) = 0;
  virtual void exitResource_Decl(PLCSTParser::Resource_DeclContext *ctx) = 0;

  virtual void enterSingle_Resource_Decl(PLCSTParser::Single_Resource_DeclContext *ctx) = 0;
  virtual void exitSingle_Resource_Decl(PLCSTParser::Single_Resource_DeclContext *ctx) = 0;

  virtual void enterAccess_Decls(PLCSTParser::Access_DeclsContext *ctx) = 0;
  virtual void exitAccess_Decls(PLCSTParser::Access_DeclsContext *ctx) = 0;

  virtual void enterAccess_Decl(PLCSTParser::Access_DeclContext *ctx) = 0;
  virtual void exitAccess_Decl(PLCSTParser::Access_DeclContext *ctx) = 0;

  virtual void enterAccess_Path(PLCSTParser::Access_PathContext *ctx) = 0;
  virtual void exitAccess_Path(PLCSTParser::Access_PathContext *ctx) = 0;

  virtual void enterGlobal_Var_Access(PLCSTParser::Global_Var_AccessContext *ctx) = 0;
  virtual void exitGlobal_Var_Access(PLCSTParser::Global_Var_AccessContext *ctx) = 0;

  virtual void enterProg_Output_Access(PLCSTParser::Prog_Output_AccessContext *ctx) = 0;
  virtual void exitProg_Output_Access(PLCSTParser::Prog_Output_AccessContext *ctx) = 0;

  virtual void enterTask_Config(PLCSTParser::Task_ConfigContext *ctx) = 0;
  virtual void exitTask_Config(PLCSTParser::Task_ConfigContext *ctx) = 0;

  virtual void enterTask_Init(PLCSTParser::Task_InitContext *ctx) = 0;
  virtual void exitTask_Init(PLCSTParser::Task_InitContext *ctx) = 0;

  virtual void enterData_Source(PLCSTParser::Data_SourceContext *ctx) = 0;
  virtual void exitData_Source(PLCSTParser::Data_SourceContext *ctx) = 0;

  virtual void enterProg_Config(PLCSTParser::Prog_ConfigContext *ctx) = 0;
  virtual void exitProg_Config(PLCSTParser::Prog_ConfigContext *ctx) = 0;

  virtual void enterProg_Conf_Elems(PLCSTParser::Prog_Conf_ElemsContext *ctx) = 0;
  virtual void exitProg_Conf_Elems(PLCSTParser::Prog_Conf_ElemsContext *ctx) = 0;

  virtual void enterProg_Conf_Elem(PLCSTParser::Prog_Conf_ElemContext *ctx) = 0;
  virtual void exitProg_Conf_Elem(PLCSTParser::Prog_Conf_ElemContext *ctx) = 0;

  virtual void enterFB_Task(PLCSTParser::FB_TaskContext *ctx) = 0;
  virtual void exitFB_Task(PLCSTParser::FB_TaskContext *ctx) = 0;

  virtual void enterProg_Cnxn(PLCSTParser::Prog_CnxnContext *ctx) = 0;
  virtual void exitProg_Cnxn(PLCSTParser::Prog_CnxnContext *ctx) = 0;

  virtual void enterProg_Data_Source(PLCSTParser::Prog_Data_SourceContext *ctx) = 0;
  virtual void exitProg_Data_Source(PLCSTParser::Prog_Data_SourceContext *ctx) = 0;

  virtual void enterData_Sink(PLCSTParser::Data_SinkContext *ctx) = 0;
  virtual void exitData_Sink(PLCSTParser::Data_SinkContext *ctx) = 0;

  virtual void enterConfig_Init(PLCSTParser::Config_InitContext *ctx) = 0;
  virtual void exitConfig_Init(PLCSTParser::Config_InitContext *ctx) = 0;

  virtual void enterConfig_Inst_Init(PLCSTParser::Config_Inst_InitContext *ctx) = 0;
  virtual void exitConfig_Inst_Init(PLCSTParser::Config_Inst_InitContext *ctx) = 0;

  virtual void enterNamespace_Decl(PLCSTParser::Namespace_DeclContext *ctx) = 0;
  virtual void exitNamespace_Decl(PLCSTParser::Namespace_DeclContext *ctx) = 0;

  virtual void enterNamespace_Elements(PLCSTParser::Namespace_ElementsContext *ctx) = 0;
  virtual void exitNamespace_Elements(PLCSTParser::Namespace_ElementsContext *ctx) = 0;

  virtual void enterNamespace_H_Name(PLCSTParser::Namespace_H_NameContext *ctx) = 0;
  virtual void exitNamespace_H_Name(PLCSTParser::Namespace_H_NameContext *ctx) = 0;

  virtual void enterUsing_Directive(PLCSTParser::Using_DirectiveContext *ctx) = 0;
  virtual void exitUsing_Directive(PLCSTParser::Using_DirectiveContext *ctx) = 0;

  virtual void enterPOU_Decl(PLCSTParser::POU_DeclContext *ctx) = 0;
  virtual void exitPOU_Decl(PLCSTParser::POU_DeclContext *ctx) = 0;

  virtual void enterExpression(PLCSTParser::ExpressionContext *ctx) = 0;
  virtual void exitExpression(PLCSTParser::ExpressionContext *ctx) = 0;

  virtual void enterConstant_Expr(PLCSTParser::Constant_ExprContext *ctx) = 0;
  virtual void exitConstant_Expr(PLCSTParser::Constant_ExprContext *ctx) = 0;

  virtual void enterXor_Expr(PLCSTParser::Xor_ExprContext *ctx) = 0;
  virtual void exitXor_Expr(PLCSTParser::Xor_ExprContext *ctx) = 0;

  virtual void enterAnd_Expr(PLCSTParser::And_ExprContext *ctx) = 0;
  virtual void exitAnd_Expr(PLCSTParser::And_ExprContext *ctx) = 0;

  virtual void enterCompare_Expr(PLCSTParser::Compare_ExprContext *ctx) = 0;
  virtual void exitCompare_Expr(PLCSTParser::Compare_ExprContext *ctx) = 0;

  virtual void enterEqu_Expr(PLCSTParser::Equ_ExprContext *ctx) = 0;
  virtual void exitEqu_Expr(PLCSTParser::Equ_ExprContext *ctx) = 0;

  virtual void enterAdd_Expr(PLCSTParser::Add_ExprContext *ctx) = 0;
  virtual void exitAdd_Expr(PLCSTParser::Add_ExprContext *ctx) = 0;

  virtual void enterTerm(PLCSTParser::TermContext *ctx) = 0;
  virtual void exitTerm(PLCSTParser::TermContext *ctx) = 0;

  virtual void enterPower_Expr(PLCSTParser::Power_ExprContext *ctx) = 0;
  virtual void exitPower_Expr(PLCSTParser::Power_ExprContext *ctx) = 0;

  virtual void enterUnary_Expr(PLCSTParser::Unary_ExprContext *ctx) = 0;
  virtual void exitUnary_Expr(PLCSTParser::Unary_ExprContext *ctx) = 0;

  virtual void enterParen_Surrounded_Expr(PLCSTParser::Paren_Surrounded_ExprContext *ctx) = 0;
  virtual void exitParen_Surrounded_Expr(PLCSTParser::Paren_Surrounded_ExprContext *ctx) = 0;

  virtual void enterPrimary_Expr(PLCSTParser::Primary_ExprContext *ctx) = 0;
  virtual void exitPrimary_Expr(PLCSTParser::Primary_ExprContext *ctx) = 0;

  virtual void enterVariable_Access(PLCSTParser::Variable_AccessContext *ctx) = 0;
  virtual void exitVariable_Access(PLCSTParser::Variable_AccessContext *ctx) = 0;

  virtual void enterCallable_Obj_Params_Assign(PLCSTParser::Callable_Obj_Params_AssignContext *ctx) = 0;
  virtual void exitCallable_Obj_Params_Assign(PLCSTParser::Callable_Obj_Params_AssignContext *ctx) = 0;

  virtual void enterFunc_Call(PLCSTParser::Func_CallContext *ctx) = 0;
  virtual void exitFunc_Call(PLCSTParser::Func_CallContext *ctx) = 0;

  virtual void enterStmt_List(PLCSTParser::Stmt_ListContext *ctx) = 0;
  virtual void exitStmt_List(PLCSTParser::Stmt_ListContext *ctx) = 0;

  virtual void enterStmt(PLCSTParser::StmtContext *ctx) = 0;
  virtual void exitStmt(PLCSTParser::StmtContext *ctx) = 0;

  virtual void enterAssign_Stmt(PLCSTParser::Assign_StmtContext *ctx) = 0;
  virtual void exitAssign_Stmt(PLCSTParser::Assign_StmtContext *ctx) = 0;

  virtual void enterVar_Assign(PLCSTParser::Var_AssignContext *ctx) = 0;
  virtual void exitVar_Assign(PLCSTParser::Var_AssignContext *ctx) = 0;

  virtual void enterAssignment_Attempt(PLCSTParser::Assignment_AttemptContext *ctx) = 0;
  virtual void exitAssignment_Attempt(PLCSTParser::Assignment_AttemptContext *ctx) = 0;

  virtual void enterInside_Callable_Obj(PLCSTParser::Inside_Callable_ObjContext *ctx) = 0;
  virtual void exitInside_Callable_Obj(PLCSTParser::Inside_Callable_ObjContext *ctx) = 0;

  virtual void enterCallable_Obj(PLCSTParser::Callable_ObjContext *ctx) = 0;
  virtual void exitCallable_Obj(PLCSTParser::Callable_ObjContext *ctx) = 0;

  virtual void enterInvocation(PLCSTParser::InvocationContext *ctx) = 0;
  virtual void exitInvocation(PLCSTParser::InvocationContext *ctx) = 0;

  virtual void enterSubprog_Ctrl_Stmt(PLCSTParser::Subprog_Ctrl_StmtContext *ctx) = 0;
  virtual void exitSubprog_Ctrl_Stmt(PLCSTParser::Subprog_Ctrl_StmtContext *ctx) = 0;

  virtual void enterParam_Assign(PLCSTParser::Param_AssignContext *ctx) = 0;
  virtual void exitParam_Assign(PLCSTParser::Param_AssignContext *ctx) = 0;

  virtual void enterCommon_Param_Assign(PLCSTParser::Common_Param_AssignContext *ctx) = 0;
  virtual void exitCommon_Param_Assign(PLCSTParser::Common_Param_AssignContext *ctx) = 0;

  virtual void enterRef_Param_Assign(PLCSTParser::Ref_Param_AssignContext *ctx) = 0;
  virtual void exitRef_Param_Assign(PLCSTParser::Ref_Param_AssignContext *ctx) = 0;

  virtual void enterOther_Param_Assign(PLCSTParser::Other_Param_AssignContext *ctx) = 0;
  virtual void exitOther_Param_Assign(PLCSTParser::Other_Param_AssignContext *ctx) = 0;

  virtual void enterSelection_Stmt(PLCSTParser::Selection_StmtContext *ctx) = 0;
  virtual void exitSelection_Stmt(PLCSTParser::Selection_StmtContext *ctx) = 0;

  virtual void enterIF_Stmt(PLCSTParser::IF_StmtContext *ctx) = 0;
  virtual void exitIF_Stmt(PLCSTParser::IF_StmtContext *ctx) = 0;

  virtual void enterCase_Stmt(PLCSTParser::Case_StmtContext *ctx) = 0;
  virtual void exitCase_Stmt(PLCSTParser::Case_StmtContext *ctx) = 0;

  virtual void enterCase_Selection(PLCSTParser::Case_SelectionContext *ctx) = 0;
  virtual void exitCase_Selection(PLCSTParser::Case_SelectionContext *ctx) = 0;

  virtual void enterCase_List(PLCSTParser::Case_ListContext *ctx) = 0;
  virtual void exitCase_List(PLCSTParser::Case_ListContext *ctx) = 0;

  virtual void enterCase_List_Elem(PLCSTParser::Case_List_ElemContext *ctx) = 0;
  virtual void exitCase_List_Elem(PLCSTParser::Case_List_ElemContext *ctx) = 0;

  virtual void enterIteration_Stmt(PLCSTParser::Iteration_StmtContext *ctx) = 0;
  virtual void exitIteration_Stmt(PLCSTParser::Iteration_StmtContext *ctx) = 0;

  virtual void enterFor_Stmt(PLCSTParser::For_StmtContext *ctx) = 0;
  virtual void exitFor_Stmt(PLCSTParser::For_StmtContext *ctx) = 0;

  virtual void enterFor_List(PLCSTParser::For_ListContext *ctx) = 0;
  virtual void exitFor_List(PLCSTParser::For_ListContext *ctx) = 0;

  virtual void enterWhile_Stmt(PLCSTParser::While_StmtContext *ctx) = 0;
  virtual void exitWhile_Stmt(PLCSTParser::While_StmtContext *ctx) = 0;

  virtual void enterRepeat_Stmt(PLCSTParser::Repeat_StmtContext *ctx) = 0;
  virtual void exitRepeat_Stmt(PLCSTParser::Repeat_StmtContext *ctx) = 0;

  virtual void enterSimple_Type_Name(PLCSTParser::Simple_Type_NameContext *ctx) = 0;
  virtual void exitSimple_Type_Name(PLCSTParser::Simple_Type_NameContext *ctx) = 0;

  virtual void enterSubrange_Type_Name(PLCSTParser::Subrange_Type_NameContext *ctx) = 0;
  virtual void exitSubrange_Type_Name(PLCSTParser::Subrange_Type_NameContext *ctx) = 0;

  virtual void enterEnum_Type_Name(PLCSTParser::Enum_Type_NameContext *ctx) = 0;
  virtual void exitEnum_Type_Name(PLCSTParser::Enum_Type_NameContext *ctx) = 0;

  virtual void enterArray_Type_Name(PLCSTParser::Array_Type_NameContext *ctx) = 0;
  virtual void exitArray_Type_Name(PLCSTParser::Array_Type_NameContext *ctx) = 0;

  virtual void enterStruct_Type_Name(PLCSTParser::Struct_Type_NameContext *ctx) = 0;
  virtual void exitStruct_Type_Name(PLCSTParser::Struct_Type_NameContext *ctx) = 0;

  virtual void enterStruct_Elem_Name(PLCSTParser::Struct_Elem_NameContext *ctx) = 0;
  virtual void exitStruct_Elem_Name(PLCSTParser::Struct_Elem_NameContext *ctx) = 0;

  virtual void enterRef_Name(PLCSTParser::Ref_NameContext *ctx) = 0;
  virtual void exitRef_Name(PLCSTParser::Ref_NameContext *ctx) = 0;

  virtual void enterRef_Type_Name(PLCSTParser::Ref_Type_NameContext *ctx) = 0;
  virtual void exitRef_Type_Name(PLCSTParser::Ref_Type_NameContext *ctx) = 0;

  virtual void enterVariable_Name(PLCSTParser::Variable_NameContext *ctx) = 0;
  virtual void exitVariable_Name(PLCSTParser::Variable_NameContext *ctx) = 0;

  virtual void enterFB_Name(PLCSTParser::FB_NameContext *ctx) = 0;
  virtual void exitFB_Name(PLCSTParser::FB_NameContext *ctx) = 0;

  virtual void enterGlobal_Var_Name(PLCSTParser::Global_Var_NameContext *ctx) = 0;
  virtual void exitGlobal_Var_Name(PLCSTParser::Global_Var_NameContext *ctx) = 0;

  virtual void enterDerived_Func_Name(PLCSTParser::Derived_Func_NameContext *ctx) = 0;
  virtual void exitDerived_Func_Name(PLCSTParser::Derived_Func_NameContext *ctx) = 0;

  virtual void enterDerived_FB_Name(PLCSTParser::Derived_FB_NameContext *ctx) = 0;
  virtual void exitDerived_FB_Name(PLCSTParser::Derived_FB_NameContext *ctx) = 0;

  virtual void enterMethod_Name(PLCSTParser::Method_NameContext *ctx) = 0;
  virtual void exitMethod_Name(PLCSTParser::Method_NameContext *ctx) = 0;

  virtual void enterClass_Type_Name(PLCSTParser::Class_Type_NameContext *ctx) = 0;
  virtual void exitClass_Type_Name(PLCSTParser::Class_Type_NameContext *ctx) = 0;

  virtual void enterClass_Name(PLCSTParser::Class_NameContext *ctx) = 0;
  virtual void exitClass_Name(PLCSTParser::Class_NameContext *ctx) = 0;

  virtual void enterInterface_Type_Name(PLCSTParser::Interface_Type_NameContext *ctx) = 0;
  virtual void exitInterface_Type_Name(PLCSTParser::Interface_Type_NameContext *ctx) = 0;

  virtual void enterProg_Type_Name(PLCSTParser::Prog_Type_NameContext *ctx) = 0;
  virtual void exitProg_Type_Name(PLCSTParser::Prog_Type_NameContext *ctx) = 0;

  virtual void enterStep_Name(PLCSTParser::Step_NameContext *ctx) = 0;
  virtual void exitStep_Name(PLCSTParser::Step_NameContext *ctx) = 0;

  virtual void enterAction_Name(PLCSTParser::Action_NameContext *ctx) = 0;
  virtual void exitAction_Name(PLCSTParser::Action_NameContext *ctx) = 0;

  virtual void enterTransition_Name(PLCSTParser::Transition_NameContext *ctx) = 0;
  virtual void exitTransition_Name(PLCSTParser::Transition_NameContext *ctx) = 0;

  virtual void enterConfig_Name(PLCSTParser::Config_NameContext *ctx) = 0;
  virtual void exitConfig_Name(PLCSTParser::Config_NameContext *ctx) = 0;

  virtual void enterResource_Type_Name(PLCSTParser::Resource_Type_NameContext *ctx) = 0;
  virtual void exitResource_Type_Name(PLCSTParser::Resource_Type_NameContext *ctx) = 0;

  virtual void enterResource_Name(PLCSTParser::Resource_NameContext *ctx) = 0;
  virtual void exitResource_Name(PLCSTParser::Resource_NameContext *ctx) = 0;

  virtual void enterAccess_Name(PLCSTParser::Access_NameContext *ctx) = 0;
  virtual void exitAccess_Name(PLCSTParser::Access_NameContext *ctx) = 0;

  virtual void enterProg_Name(PLCSTParser::Prog_NameContext *ctx) = 0;
  virtual void exitProg_Name(PLCSTParser::Prog_NameContext *ctx) = 0;

  virtual void enterTask_Name(PLCSTParser::Task_NameContext *ctx) = 0;
  virtual void exitTask_Name(PLCSTParser::Task_NameContext *ctx) = 0;

  virtual void enterNamespace_Name(PLCSTParser::Namespace_NameContext *ctx) = 0;
  virtual void exitNamespace_Name(PLCSTParser::Namespace_NameContext *ctx) = 0;

  virtual void enterControl_Variable(PLCSTParser::Control_VariableContext *ctx) = 0;
  virtual void exitControl_Variable(PLCSTParser::Control_VariableContext *ctx) = 0;

  virtual void enterIndicator_Name(PLCSTParser::Indicator_NameContext *ctx) = 0;
  virtual void exitIndicator_Name(PLCSTParser::Indicator_NameContext *ctx) = 0;

  virtual void enterIdentifier(PLCSTParser::IdentifierContext *ctx) = 0;
  virtual void exitIdentifier(PLCSTParser::IdentifierContext *ctx) = 0;


};

}  // namespace plcst
